.Dd March 21, 2009
.Dt SLATE 1
.Sh NAME
.Nm slate
.Nd the Slate programming language, an interactive object-oriented programming
language and environment
.Sh SYNOPSIS
.Sy slate
.Op Fl i Ar image
.Op Fl mo Ar OldGenerationBytes 
.Op Fl mn Ar NewGenerationBytes
.Oo
.Bk
.Ar image-argument ...
.Ek
.Oc
.Sh COPYRIGHT
Slate is Copyright (C) 2002-2009 by Timmy Douglas, Lee Salzman, and Brian T. Rice
.Sh DESCRIPTION
.Pp
Slate is a dynamic, object-oriented programming language and live-object
programming environment that is flexible enough to fit many different styles of
usage.
.Pp
Slate's implementation is clean, modular, and highly portable, relying only on
.St -ansiC language features.
.Pp
The Slate Programmer's Reference Manual describes the syntax and semantics of
the language and the standard core libraries in detail, and provides an index
of major common features. Slate documentation may be found via the
.Sx "INTERNET RESOURCES"
section below, or installed locally with a standard binary package.
.Pp
Slate's core features (there are many more):
.Bl -tag -width 4n
.It Sy Interactive
Slate is implemented with an interactive listener that takes expressions
dynamically. Compilation does not interrupt interactions and is quick.
.It Sy Live
Slate works with worlds of living objects called
.Em images
which can be snapshot, saved, and restarted transparently for the programs
within them.
.It Sy "Declarations Optional"
Slate programs do not need to be explicitly typed, even though objects know
their types.
.It Sy Uniformity
Everything in Slate is an object, and the system is designed to be more generic
than its predecessors about objects.
.It Sy "Object creation from prototypes"
Each object is a dynamic template for creating more objects, not just static
classes. Objects are also self-describing.
.It Sy "Multiple Dispatch"
Methods and operators can be specialized on any argument.
.El
.Sh OPTIONS
.Bl -tag -width 8n -compact
.It Fl mo Oo GB|MB|KB Oc
Sets the amount old memory for tenured/old objects (Default 400MB)
.It Fl mn Oo GB|MB|KB Oc
Sets the amount of new memory for young/new objects (Default 10MB)
.It Fl -image-help
Requests to the image heap to print out the command options that it
handles. This is done after the slate image is loaded.
.It Fl -load Ar file
Starts Slate and immediately executes the source in the given file before
doing anything else.
.It Fl -eval Ar expression
Executes the given expression when starting, once any load has completed.
.El
Other helpful information and examples can be found in
.Pa ${prefix}/doc/slate .
.Sh FILES
.Bl -tag -width "1234567890123" -compact
.It Pa ${prefix}/bin/slate
Recommended location of the Slate virtual machine.
.It Pa ${prefix}/share/slate/
Recommended location of the default Slate object images, namely
.Sy kernel.image
and
.Sy slate.image .
.It Pa ${prefix}/share/slate/src/
The standard library sources.
.El
.Sh BUGS
Slate is stable and regularly tested, but changing rapidly. The
.Dq BUGS
file in the Slate source distribution lists open issues.
Reporting bugs is usually done via mailing list or IRC. Response is usually
quick. You can meet many of the contributors in
.Sy #slate
on the Freenode network.
.Sh AUTHORS
.An "Timmy Douglas" Aq slate@timmy.tmbx.com
.An "Lee Salzman"
.An "Brian T. Rice" Aq briantrice@gmail.com
.An and many contributors.
.Sh INTERNET RESOURCES
Main website:
.Sy http://www.slatelanguage.org/
.Sh LICENSING
Slate is distributed freely under the Open Source MIT Public License. See
.Dq LICENSE
in the Slate source distribution.
